
[dbo].[CalculateFiscalPeriod]
CREATE FUNCTION [dbo].[CalculateFiscalPeriod]
(@transDate datetime, @firstMonthFiscalYear int)
RETURNS int
AS
BEGIN
DECLARE @fiscalMonth int
DECLARE @fiscalYear int
DECLARE @transMonth int
DECLARE @transYear int
DECLARE @fiscalPeriod char(6)
SET @transMonth = DATEPART(m, @transDate)
SET @transYear = DATEPART(yyyy, @transDate)
IF @firstMonthFiscalYear = 0
SET @firstMonthFiscalYear = 1
IF @firstMonthFiscalYear = 1
BEGIN
SET @fiscalMonth = @transMonth
SET @fiscalYear = @transYear
END
ELSE IF @firstMonthFiscalYear <= @transMonth
BEGIN
SET @fiscalMonth = @transMonth - @firstMonthFiscalYear + 1
SET @fiscalYear = @transYear + 1
END
ELSE
BEGIN
SET @fiscalMonth = 13 - @firstMonthFiscalYear + @transMonth
SET @fiscalYear = @transYear
END
IF @fiscalMonth < 10
SET @fiscalPeriod = CAST(@fiscalYear as char(4)) + '0' + CAST(@fiscalMonth as char(1))
ELSE
SET @fiscalPeriod = CAST(@fiscalYear as char(4)) + CAST(@fiscalMonth as char(2))
RETURN CAST(@fiscalPeriod as int)
END
GO